#!/bin/bash

#Opciones
OPCION_FIRST="-f"
OPCION_LAST="-l"
OPCION_SEARCH="-s"

#=======================FUNCIONES=======================
#Parametros: $1: filtro
function validar_NLineas
{
	#válido la cantidad de lineas
	local n_lineas=$(echo "$1" | grep "^[0-9]\{1,\}$")
	if [ -z "$n_lineas" ]
		then
			echo "Error: Parametro incorrecto, para visualizar tiene que ingresar un numero entero"
			return 1
	else
		return 0
	fi

}

function mostrar_Op
{
	echo "Segundo parámetro inválido. A continuación se muestran las opciones"
	echo "Tipo de opción"
	echo "-f: se visualizará las primeras n lineas del archivo log correspondiente"
	echo "-l: se visualizará las últimas n lineas del archivo log correspondiente"
	echo "-s: se visualizará las lineas que contengan el string buscado en el archivo log correspondiente"

}

#Parametros: # $1: opcion $2: filtro
function visualizar_Log
{
	case "$1" in
		$OPCION_FIRST)
			validar_NLineas "$2"        
			if [ "$?" -eq 0 ]
				then
					head -n "$2" "$archivoLog"
			fi
			;;

		$OPCION_LAST)
			validar_NLineas "$2"
			if [ "$?" -eq 0 ]
				then
					tail -n "$2" "$archivoLog"
			fi
			;;

		$OPCION_SEARCH)
			if [ ! -z "$(echo "$2" | grep "^[[:alnum:]]\{1,\}")" ]
				then
					grep -n "$2" "$archivoLog"
			else
				echo "Error. El string a buscar debe ser alfanumerico" 
			fi
			;;
	esac
}

#=======================PRINCIPAL=======================
#Parámetros $1: Comando $2: Opción $3: Filtro

#validación de parámetros
if [ "$#" -ne 3 ]
	then
		echo "Cantidad de parámetros inválido, a continuación se muestra su uso"
		echo "Uso del script: VlogY.sh <comando> <opción> <filtro>"
		exit 1
fi

# verifico el entorno
if [ "$INICIO_OK" != "grupo06" ]
	then
		echo "ERROR: El ambiente no esta correctamente inicializado."
		echo "       Por favor ejecute InicioY.sh"
		exit 2
fi

#valido que el primer parametro pasado este compuesto solo por caracteres alfabeticos
if [ ! -z $(echo "$1" | grep "^[[:alpha:]]\{1,\}$") ]
	then
		#validación del comando
		if [ "$1" != "InicioY" -a "$1" != "DetectaY" -a "$1" != "Interprete" -a "$1" != "MoverY" ]
			then
				echo "Primer parámetro erroneo, debe ser InicioY, DetectaY, Interprete o MoverY"
                                exit 1 
		fi
else
	echo "Error, comando ingresado debe estar formado por caracteres alfabeticos"
	exit 1
fi

#valido caracteres del segundo parametro
if [ ! -z $(echo "$2" | grep "^-[[:alpha:]]$") ]
	then

		#validación de la opción
		if [ "$2" != "$OPCION_FIRST" -a "$2" != "$OPCION_LAST" -a "$2" != "$OPCION_SEARCH" ]
			then
                                mostrar_Op
				exit 1
		fi
else
	echo "Error, la opción ingresada debe comenzar con un guion(-) seguido de un caracter alfabetico"
	exit 1
fi 

#verifico existencia del archivo log correspondiente
archivoLog="$LOGDIR/$1.$LOGEXT"

if [ ! -f "$archivoLog" ]
	then
		echo "El archivo log $archivoLog no existe"
		exit 1
fi

visualizar_Log "$2" "$3" 
